from flask import Flask
from flask_caching import Cache

class Context:
    # 私有化容器，防止外部修改容器内容
    __contextDict = {}
    
    # 初始化容器
    def __init__(self):
        app = self.__initFlaskApp()
        Context.__contextDict["app"] = app
        cache = self.initCache(app=app)
        Context.__contextDict["cache"] = cache
        
    # 初始化Flask对象
    def __initFlaskApp(self):
        app = Flask(__name__)
        return app
    
    # 初始化缓存
    def initCache(self, app):
        #配置RedisCache缓存类型参数值，我们使用本地的redis，没有密码
        config={
            'CACHE_TYPE': "redis",
            'CACHE_REDIS_URL': "redis://192.168.154.128:6380/1",
            'CACHE_KEY_PREFIX': "sjzh:",
            "CACHE_DEFAULT_TIMEOUT": 3000
        }
        #初始化缓存
        cache=Cache(app=app,config=config)  #创建Cache对象
        #或使用init_app()初始化缓存
        #cache=Cache()         #创建Cache对象
        #cache.init_app(app=app,config=config)
        return cache
    
    # 获取容器中的app对象
    def getApp(self):
        return Context.__contextDict["app"]
    
    # 获取容器中的cache对象
    def getCache(self):
        return Context.__contextDict["cache"]

context = Context()